<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    function arr(nums) {
      //浅复制原数组，并排序做为参考
      const temp = nums.slice();
      temp.sort((a, b) => a - b);
      //定义左右指针，找到符合题意的子数组的左右边界
      let i = 0, j = temp.length - 1;
      while (i <= j) {
        if (temp[i] == nums[i]) {//如果相同，左指针一直右移
          i++;
        } else {//如果不同（此时子数组的左边界已经确定），则从右开始确定子数组的右边界
          if (temp[j] == nums[j]) {//如果相同，右指针一直左移
            j--;
          } else {//如果不同，此时左右边界都确定了，就可以得出最短子数组的长度返回了
            return j - i + 1;
          }
        }
      }
      //如果前面的循环里没有返回，说明原数组nums是有序的，最短子数组的长度为0
      return 0;
    };
    console.log(arr([2, 6, 4, 8, 10, 9, 15]));
  </script>
</body>

</html>